A NAS server provides clients over a network remote access and storage to a local file system through Network File System (NFS) or Server Message Block (SMB) (e.g., Common Internet File System (CIFS) and SMB2) protocols. A NAS server needs to be tested for the maximum amount of file system inputs/outputs (IOs), the maximum volume of network traffic, and the maximum number of concurrent sessions that the server can handle. A common issue in testing a NAS server is the inability of the testing devices to generate enough sessions and network traffic that can substantially stretch or press a NAS server, and hence accurately test the server's performance.
Remote file access protocols, such as NFSv4, CIFS, and SMB2 are state-full and complex. Hence, the NAS clients that access the NAS server are typically heavyweights (i.e., complex processes that require significant amount of resources, such as memory and computing resources) to establish and maintain sessions. The NAS clients are also optimized for performance, e.g., by caching data locally and thereby consuming more local resources. Such features make it difficult to create and maintain enough client sessions (e.g., thousands of sessions) in a single load generating device for the purpose of testing the NAS server. Further, since an objective of an optimized NAS client is minimizing network traffic, the suitability of a NAS client to be a NAS traffic generator is further diminished Equipment vendors develop test devices which are typically lightweights (i.e., consume less resources) and reside in the network stack, and thus can generate more sessions and traffic in comparison to real NAS clients. These devices require significant amount of engineering resources for initial development and subsequent maintenance.